
import java.util.Random;
import java.util.Scanner;

public class test2 {
    public static void main14(String[] args) {
        //编写程序数一下 1到 100 的所有整数中出现多少个数字9
        //创建一个计数变量
        int count = 0;
        //输出1--100
        for(int i = 1; i < 100; i++) {
            // %10 可以得到个位数的数字
            if(i % 10 == 9) {
                //等于9就计数一次
                    count++;
                }
            //除10得到十位数
            if(i / 10 == 9) {
                    //等于9计数一次
                    count++;
            }
        }
        //输出几次
        System.out.println(count);
    }
    public static void main13(String[] args) {
        //计算1/1-1/2+1/3-1/41+1/5 …… + 1/99 - 1/100 的值
        //偶数之和
        double sum = 0;
        //奇数之和
        double sum1 = 0;
        //生成1--100
        for(double i = 1; i <= 100; i++) {
            //偶数
            if(i % 2 == 0) {
                double n = 1/i;
                //每次累加
               sum += n;
            }else {
                //奇数
                double a = 1/i;
                //每次累加
                 sum1 += a;
            }
        }
        //输出
        System.out.println(sum1-sum);

    }
    public static void main12(String[] args) {
        //输出一个整数的每一位，如：123的每一位是3，2，1
        //在控制台输入
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数：");
        //输入的类型为int
        int number = scanner.nextInt();
        //输入负数的情况
        int originalNumber = number;//先把负数给originalNumber
        if(number < 0) {
            //得到一个正数的numder
            number = -number;
        }
        while(number > 0) {//循环
            int digit = number % 10;//%10 取余数得到个位数
            System.out.print(digit + ",");//输出
            number = number / 10;//除10把个位数去除，然后一直循环知道number为零
        }
        if(originalNumber < 0) {
            System.out.print("-");//打印负号
        }
        System.out.println();
        scanner.close();//释放scanner
    }
    public  static void main11(String[] args) {

        //编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，提示“登录成功”,密码错误， 可以重新输 入，最多输入三次。三次均错，则提示退出程序
        Scanner scanner = new Scanner(System.in);//输入
        String correctPassword = "123456";//设定一个正确密码
        int attempts = 3;//最多三次机会
        for(int i = 1; i <= attempts; i++) {//循环三次
            System.out.println("请输入密码:");//提示
            String inputPassword = scanner.nextLine();//输入密码
            if(inputPassword == correctPassword) {//判定是否正确
                System.out.println("登入成功");
                break;//正确跳出循环
            }else {
                System.out.println("密码错误，请重新输入：");

                if(i == attempts) {
                    //到达三次机会时结束程序
                    System.out.println("错误次数过多，退出程序");
                    return;
                }
            }
        }
        scanner.close();//回收scanner

    }
    public static void main10(String[] args) {
        //猜数字游戏
        Random random = new Random();//生成随机数
        Scanner scanner = new Scanner(System.in);//输入
        int toGuess = random.nextInt(100);//生成1--100的随机数
        while(true) {
            System.out.println("请输入数字：");//提示
            int num = scanner.nextInt();//输入数字
            //对比输入的数字和生成的数字
            if(num < toGuess) {
                System.out.println("猜小了");
            }else if (num > toGuess){
                System.out.println("猜大了");
            }else {
                System.out.println("恭喜你猜对了");
                break;//猜对了退出循环
            }
        }
        scanner.close();
    }
    /*public static void main(String[] args) {
        //获取一个数二进制序列中所有的偶数位和奇数位，分别输出二进制序列。
        int number = 55;//设定的一个数
        int oddBits = 0;//奇数位
        int evenBits = 0;//偶数位
        int temp = number;//
        while(temp > 0) {
            int bit = temp & 1;
            oddBits = (oddBits << 1) | bit;
            evenBits <<= 1;
            temp >>= 1;
        }
        if(Integer.bitCount(number) % 2 != 0) {
            evenBits |= 1;
        }
        System.out.println("原始二进制序列：" + Integer.toBinaryString(number));
        System.out.println("奇数位二进制序列：" + Integer.toBinaryString(oddBits));
        System.out.println("偶数位二进制序列：" + Integer.toBinaryString(evenBits));
    }*/
    /*public static void main(String[] args) {
        int number = 29; // 你可以修改这个值来测试不同的数字

        int oddBits = 0; // 存储奇数位
        int evenBits = 0; // 存储偶数位

        // 提取奇数位和偶数位
        for (int i = 0; number > 0; i++) {
            int bit = number & 1; // 获取最低位
            if (i % 2 == 0) {
                oddBits = (oddBits << 1) | bit; // 奇数位
            } else {
                evenBits = (evenBits << 1) | bit; // 偶数位
            }
            number >>>= 1; // 右移一位，准备获取下一个位
        }

        // 输出结果
        System.out.println("原始二进制序列：" + Integer.toBinaryString(number));
        System.out.println("奇数位二进制序列：" + Integer.toBinaryString(oddBits));
        System.out.println("偶数位二进制序列：" + Integer.toBinaryString(evenBits));
    }*/
    public static void main9(String[] args) {
        int number = 29; // 你可以修改这个值来测试不同的数字

        // 将整数转换为二进制字符串
        String binaryString = Integer.toBinaryString(number);

        // 初始化字符串来存储奇数位和偶数位
        StringBuilder oddBits = new StringBuilder();
        StringBuilder evenBits = new StringBuilder();

        // 遍历二进制字符串，提取奇数位和偶数位
        for (int i = 0; i < binaryString.length(); i++) {
            if (i % 2 == 0) {
                oddBits.append(binaryString.charAt(i)); // 奇数位
            } else {
                evenBits.append(binaryString.charAt(i)); // 偶数位
            }
        }

        // 输出结果
        System.out.println("原始二进制序列：" + binaryString);
        System.out.println("奇数位二进制序列：" + oddBits.toString());
        System.out.println("偶数位二进制序列：" + evenBits.toString());
    }
    public static void main8(String[] args) {
        // 写一个函数返回参数二进制中 1 的个数
        int number = 29;
        //调用
        int count = countOnesInBinary(number);
        System.out.println("1的个数是：" + count);
    }
    //方法的实现
    public static int countOnesInBinary(int num) {
        int count = 0;//计数1
        while(num != 0) {
            num &= (num - 1);//每次&掉一个二进制的1
            count++;
        }
        return count;
    }
    public static void main7(String[] args) {
        //求出0～999之间的所有“水仙花数”并输出。
        //输出100---999的数
        for(int num = 100; num < 1000; num++) {
            int b = num / 100;//除100得到百位
            int s = (num / 10) % 10;//得到十位
            int g = num % 10;//得到个位数上的数字
            int sumOfPowers = (int)(Math.pow(b,3) + Math.pow(s,3) + Math.pow(g,3));//用pow计算各自的三次方
            if(sumOfPowers == num) {
                System.out.println(num);//判断是否相等
            }
        }

    }
        //求两个正整数的最大公约数
        public static void main6(String[] args) {
            int num1 = 48;
            int num2 = 18;

            while (num2 != 0) {
                int temp = num2;
                num2 = num1 % num2;
                num1 = temp;
            }
            System.out.println(" 最大公约数是：" + num1);
        }
    public static void main5(String[] args) {
        //输出乘法口诀表
        //循环嵌套
        for(int i = 1; i < 10; i++) {
            //控制每一列
            for(int j = 1; j <= i; j++) {
                //输出每一行
                System.out.printf(j + "*" + i + "=" + (i*j) + "\t");
            }
            System.out.println();//输出一行换行
        }
    }

    public static void main4(String[] args) {
        //输出 1000 - 2000 之间所有的闰年
        System.out.println("1000 - 2000 之间所有的闰年:");
        //循环1000--2000
        for(int year = 1000; year <= 2000; year++) {
            //能够被一百整除的，并且能被四百整除
            if(year % 100 == 0) {
                if(year % 400 == 0) {
                    System.out.print(year + " ");
                }
            }else {
                //不能被一百整除，可以被整除的
                if(year % 4 == 0) {
                    System.out.print(year + " ");
                }
            }
        }
    }

    public static void main3(String[] args) {
        System.out.println("1到100之间的素数有：");
        //循环输出2到100
        for (int number = 2; number <= 100; number++) {
            if (number <= 1) {
                continue; // 小于等于1的数不是素数，跳过
            }
            if (number == 2) {
                System.out.print(number + " "); // 2是素数
                continue;
            }
            if (number % 2 == 0) {
                continue; // 排除所有偶数
            }
            boolean isPrime = true; // 假设number是素数
            int sqrt = (int) Math.sqrt(number);
            for (int i = 3; i <= sqrt; i += 2) {
                if (number % i == 0) {
                    isPrime = false; // 找到一个因子，所以number不是素数
                    break;
                }
            }
            if (isPrime) {
                System.out.print(number + " "); // 如果number是素数，打印它
            }
        }
    }


    public static void main(String[] args) {

        //System.out.println("hello");
        // 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字：");
        int string = scanner.nextInt();
        if (string <= 18) {
            System.out.println("少年");
        } else if (string > 18 && string <= 28) {
            System.out.println("青年");
        } else if (string > 29 && string <= 55) {
            System.out.println("中年");
        } else {
            System.out.println("老年");

        }
    }
    public static void main2(String[] args) {
        //判定一个数字是否是素数
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字：");
        int in = scanner.nextInt();
        if(in <= 1){
            System.out.println(in + "不是素数");
        }if(in == 2){
            System.out.println(in + "是素数");
        }else {
            int i = 2;
            while (i < (int) Math.sqrt(in)) {
                if ( in % i == 0 ) {
                    System.out.println(in + "不是素数");
                    return;
                }
                i++;
            }
            System.out.println(in + "是素数");
        }

    }
}
